Онлайн-справочник по самым часто задаваемым вопросам из темы "Как сделать?" на форуме QSP.su

< Назад, к странице 177
Вперёд, к странице 179 >

Зарезервированные слова, системные переменные и спецсимволы

Системные переменные

$BACKIMAGE

$BACKIMAGE — содержит путь к файлу фонового изображения для окна основного описания. Фон в окне основного описания отображается в том случае, если значение данной переменной отлично от '' (т.е. не пустая строка) и файл изображения удалось загрузить.

Пример:

        $backimage="img/bg.png" & ! устанавливаем фоновым изображение, которое лежит в папке "img".
        $backimage="" & ! убираем изображение из фона окна основного описания.

$COUNTER

$COUNTER — содержит название локации-счётчика. Локация-счётчик может использоваться для реалтаймовых событий (то есть событий, происходящих в действительном времени); например, плавное изменение цвета фона, постепенный вывод текста на экран, плейлист для постоянного проигрывания музыки и другие.

Локация-счетчик вызывается через одинаковые промежутки времени, по умолчанию каждые 500 мс, т.е. 2 раза в секунду. Автоматическое обновление интерфейса срабатывает с той же частотой. Промежутки задаются оператором settimer в миллисекундах.

Если ваша локация-счётчик называется "Счётчик", на самой первой локации в игре нужно написать:

        $counter='Счётчик'

Как правило, чтобы не путаться, локацию называют так же, как и служебную переменную — "Counter":

        $counter='Counter'

Чтобы отключить выполнение локации-счётчика, нужно задать пустое значение переменной $:

        $counter=""

$FNAME

$FNAME — содержит название используемого в данный момент шрифта. Если равна '' (пустая строка), то используется шрифт, заданный в настройках программы.

Пример:

        ! устанавливаем для всей игры шрифт Courier New
        $fname="Courier New"

$ONACTSEL

$ONACTSEL — содержит название локации-обработчика события "выделение действия". Иными словами, в этой переменной указывается название локации, код на которой срабатывает, когда одно из выведенных на экран действий выделено.

Следует помнить, что выделение действия происходит при наведении на него указателя мыши, а не при непосредственном нажатии.

Назначаем в качестве локации-обработчика события "выделение действия" локацию "on_mouse":

        $onactsel="on_mouse"

Данная локация полезна, к примеру, для вывода изображений или проигрывания звуков при выборе действий. Получить название выбранного действия можно через функцию $selact.

        if instr(1,$selact,'пойти'): play 'sounds\walk.mp3'

Чтобы отключить локацию-обработчик события "выделение действия", нужно задать переменной $onactsel пустое значение:

        $onactsel=""

$ONGLOAD

$ONGLOAD — содержит название локации-обработчика события "загрузка состояния игры" (далее "обработчик загрузки состояния"). Иными словами, в эту переменную записывается название локации, код которой будет выполняться всякий раз после того, как был загружен файл сохранения состояния игры ("файл сохранения") с помощью команды opengame.

Назначаем в качестве обработчика загрузки состояния локацию "on_game_load":

        $ongload="on_game_load"

Чтобы отключить обработчик загрузки состояния, нужно задать переменной $ongload пустое значение:

        $ongload=""

$ONGSAVE

$ONGSAVE - содержит название локации-обработчика события "сохранение состояния игры" (далее "обработчик сохранения состояния"). Иными словами, в эту переменную записывается название локации, код которой будет выполняться всякий раз после того, как было записано состояние игры в новый или уже существующий файл сохранения состояния игры ("файл сохранения") с помощью команды savegame.

Назначаем в качестве обработчика сохранения состояния локацию "on_game_save":

        $ongsave="on_game_save"

Чтобы отключить обработчик сохранения состояния, нужно задать переменной $ongsave пустое значение:

        $ongsave=""

$ONNEWLOC

$ONNEWLOC — содержит название локации-обработчика перехода на новую локацию (аналог локации "common" в URQ). Иными словами, в эту переменную записывается название локации, код которой выполняется каждый раз после выполнения кода локации, на которую был осуществлён переход с помощью операторов goto или xgoto. Управление игрой передаётся игроку уже после выполнения кода на этой локации-обработчике.

Назначаем в качестве обработчика перехода на новую локацию локацию "on_goto_newloc":

        $onnewloc="on_goto_newloc"

Получить название локации, на которую был осуществлён переход, можно с помощью функции $curloc.

        if $curloc = 'дом': кошка = 1

Чтобы отключить локацию-обработчик перехода на новую локацию, нужно задать переменной $onnewloc пустое значение:

        $onnewloc=""

$ONOBJADD

$ONOBJADD — содержит название локации-обработчика события "добавление предмета". Иными словами, в эту переменную записывается название локации, код которой выполняется всякий раз после добавления предмета в окно предметов с помощью команды addobj.

При добавлении предмета этой локации-обработчику передаются два аргумента, значения которых можно получить из $args[0] и $args[1] соответственно:

Данная локация полезна, к примеру, для ограничения вместительности рюкзака.

Назначаем в качестве локации-обработчика события "добавление предмета" локацию "on_object_add":

        $onobjadd="on_object_add"

Чтобы отключить локацию-обработчик события "добавление предмета", нужно задать переменной $onobjadd пустое значение:

        $onobjadd=""

$ONOBJDEL

$ONOBJDEL — содержит название локации-обработчика события "удаление предмета". Иными словами, в эту переменную записывается название локации, код которой вполняется всякий раз при удалении предмета с помощью команды delobj. Если воспользоваться командой killobj, то это будет аналогично серии команд delobj, соответственно и локация-обработчик будет вызвана столько раз, сколько предметов будет удалено с помощью killobj.

При использовании команды killall локация-обработчик удаления предмета не вызывается, поскольку системная переменная $onobjdel уничтожается.

При удалении предмета этой локации-обработчику передаётся аргумент, значение которого можно получить из $args[0]:

Назначаем в качестве локации-обработчика события "удаление предмета" локацию "on_object_del":

        $onobjdel="on_object_del"

Данная локация полезна, к примеру, для проверки возможности удаления предмета:

        ! например есть предмет, который нам пригодится по сюжету
        if $args[0]="Важный артефакт":
            ! восстанавливаем предмет
            addobj $args[0]
        end

Чтобы отключить локацию-обработчик события "удаление предмета", нужно задать переменной $onobjdel пустое значение:

        $onobjdel=""

$ONOBJSEL

$ONOBJSEL — содержит название локации-обработчика события "выделение предмета" (далее "локация-обработчик выделения предмета"). Иными словами, в этой переменной указывается название локации, код на которой выполняется всякий раз при выделении предмета. Выделение предмета происходит непосредственно при "нажатии" на предмет (щелчок мышью по предмету).

Назначаем в качестве локации-обработчика выделения предмета локацию "on_object_select":

        $onobjsel="on_object_select"

Данная локация полезна, к примеру, для выводаинформации о предмете, или меню предмета. Получить название выбранного предмета можно через функцию $selobj.

        if $selobj = 'чайник':
            p 'Cамый обычный чугунный чайник.'
        end

При выборе играющим какого-либо предмета, он остаётся выделенным. Снять выделение можно командой unselect.

$USERCOM

$USERCOM — содержит название локации-обработчика строки ввода (поля ввода). Код данной локации-обработчика выполняется, если курсор установлен в строку ввода в момент нажатия клавиши "Enter" .

Назначаем в качестве локации-обработчика строки ввода локацию "user_command_line":

        $usercom="user_command_line"

Полезна при организации парсера (управление игрой с помощью строки ввода), или для организации отладчика. Пример кода для локации-обработчика:

        ! если введённый текст соответствует названию существующей локации
        if (loc $user_text)=-1:
            ! осуществляем переход на эту локацию
            goto $user_text
        end

ARGS ($ARGS)

ARGS — специфический системный массив, в который помещаются значения аргументов, передаваемых пользователем при обращении к локации или коду, записанному в виде текста. Пример:

        gosub "#array.srtd#","$mass","rug","$time_ar"

Здесь на локацию "#array.srtd#" будут переданы три аргумента, которые поместятся в первые три ячейки массива $args соответсвенно. То есть в момент начала выполнения кода на локации "#array.srtd#" в $args[0] уже будет присутствовать значение "$mass", в $args[1] — значение "rug", в $args[2] — значение "$time_ar".

При использовании операторов gosub, goto, xgoto, dynamic и функций dyneval, func можно указать до девяти таких аргументов, и все они будут помещены в ячейки массива args с нулевой по восьмую. Однако, поскольку args — это всё же массив, вы можете работать с ним, как с обычным массивом, т.е. использовать больше десяти ячеек, назначать текстовые индексы и т.д.

Отличительной особенностью массива args является то, что для каждого отдельного блока кода создаётся свой собственный массив args. То есть если вы из локации 1 вызываете локацию 2, то на локации 1 действует собственный массив args, а на локации 2 — собственный, и значения в этих массивах не пересекаются.

Пример:

    # локация_1
    args[0]=23
    gosub "локация_2",34
    args[0]
    -

    # локация_2
    args[0]
    -

Запустив этот код, вы увидите, что сначала будет выведено число 34, и только затем 23.

Более того, если вы сделаете рекурсивный вывод локации самой из себя, то для каждого вызова локации будет создан собственный набор массивов. Таким образом массив args является локальным для каждого отдельного вызова блока кода.

Отдельными блоками кода в QSP считаются:

Для каждой отдельной сессии таких блоков кода плеер будет создавать собственный массив args.

BCOLOR

BCOLOR — содержит цвет текущего фона. Если равна 0, то используется цвет, заданный в настройках программы. Примеры:

        ! чёрный цвет фона
        bcolor=-16777216
        ! красный цвет фона
        bcolor=-16776961
        ! белый цвет фона
        bcolor=-1

Поскольку цвет фона кодируется специальным числом, а вычислять это число самостоятельно неудобно, следует пользоваться функцией rgb, которой в качестве аргументов передаются три составляющие цвета:

        ! задаём цвет фона через функцию rgb(red,green,blue)
        ! фон синего цвета
        bcolor=rgb(0,0,255)
        ! фон жёлтого цвета
        bcolor=rgb(255,255,0)
        ! фон оранжевого цвета
        bcolor=rgb(255,130,0)
        ! фон голубого цвета
        bcolor=rgb(0,255,255)
        ! фон малинового цвета
        bcolor=rgb(255,0,255)

DEBUG

DEBUG — если значение переменной отлично от нуля, отключается проверка идентификатора игры при загрузке состояния. Иначе при каждом изменении файла игры нельзя будет использовать файлы сохранений, сделанные до изменения игры.

Совет: во время разработки и тестов игры значение переменной debug всегда должно быть отлично от нуля, а когда вы выпускаете финальную версию игры (релиз), нужно выставить переменной debug значение 0, чтобы игроки не смогли загрузить файлы сохранений от других игр.

DISABLESCROLL

DISABLESCROLL — если значение переменной отлично от нуля, автопрокрутка текста в окнах основного и дополнительного описаний отключается.

Довольно мутное поведение в классическом плеере - при некоторых обстоятельствах текст и так не прокручивается.

DISABLESUBEX

DISABLESUBEX — если значение переменной отлично от нуля, отключается вычисление подвыражений в строках. Пример:

        var=123
        $text='<<var>>'        & ! переменной $text будет присвоена строка '123'
        'string <<var>>'    & ! на экран будет выведена строка 'string 123'
        '<<5+6>>'            & ! на экран будет выведена строка '11'

        disablesubex=1        & ! отключаем вычисление подвыражений
        $text='<<var>>'        & ! переменной $text будет присвоена строка '<<var>>'
        'string <<var>>'    & ! на экран будет выведена строка 'string <<var>>'
        '<<5+6>>'            & ! на экран будет выведена строка '<<5+6>>'

В плеерах версии 5.8.0 и выше эта переменная больше не используется.

FCOLOR

FCOLOR — содержит цвет используемого в данный момент шрифта. Если равна 0, то используется цвет, заданный в настройках программы. Изменение значения переменной меняет цвет всего текста игры, кроме гиперссылок и текста, цвет которого переназначен через HTML. Пример:

        ! чёрный цвет текста
        fcolor=-16777216
        ! красный цвет текста
        fcolor=-16776961
        ! белый цвет текста
        fcolor=-1

Поскольку цвет шрифта кодируется специальным числом, а вычислять это число самостоятельно неудобно, следует пользоваться функцией rgb, которой в качестве аргументов передаются три составляющие цвета:

        ! задаём цвет текста через функцию rgb(red,green,blue)
        ! текст чёрного цвета
        fcolor=rgb(0,0,0)
        ! текст белого цвета
        fcolor=rgb(255,255,255)
        ! текст красного цвета
        fcolor=rgb(255,0,0)
        ! текст зелёного цвета
        fcolor=rgb(0,255,0)

FSIZE

FSIZE — содержит размер используемого в данный момент шрифта. Если равна 0, то используется размер, заданный в настройках программы. Относительно данного значения в HTML-режиме вычисляются размеры шрифтов тега <font>. Пример:

        fsize=18

Размер шрифта устанавливается для всего текста в игре, кроме текста, размер которого переназначен через HTML.

LCOLOR

LCOLOR — содержит текущий цвет шрифта гиперссылок. Если равна 0, то используется цвет, заданный в настройках программы. Изменение значения переменной меняет цвет текста всех гиперссылок, кроме тех, цвет которых переназначен через HTML. Пример:

        ! чёрный цвет гиперссылок
        lcolor=-16777216
        ! красный цвет гиперссылок
        lcolor=-16776961
        ! белый цвет гиперссылок
        lcolor=-1

Поскольку цвет в QSP кодируется специальным числом, а вычислять это число самостоятельно неудобно, следует пользоваться функцией rgb, которой в качестве аргументов передаются три составляющие цвета:

        ! задаём цвет  гиперссылок через функцию rgb(red,green,blue)
        !  гиперссылки синего цвета
        lcolor=rgb(0,0,255)
        ! гиперссылки жёлтого цвета
        lcolor=rgb(255,255,0)
        ! гиперссылки оранжевого цвета
        lcolor=rgb(255,130,0)
        ! гиперссылки голубого цвета
        lcolor=rgb(0,255,255)
        ! гиперссылки малинового цвета
        lcolor=rgb(255,0,255)

NOSAVE

NOSAVE — если значение данной переменной отлично от 0, пункт меню плеера "Сохранить состояние игры" игроку становится недоступен, т.е. игрок не может самостоятельно сохранить игру. В то же время на уровне кода QSP продолжает работать оператор savegame. Пример:

        ! отключаем возможность сохранения игры
        nosave=1
        act "Бросить кости":
            cubes=rand(1,6)
            ! включаем возможность сохранений обратно
            nosave=0
            delact $selact
        end

RESULT ($RESULT)

RESULT — специфическая системная переменная, предназначенная для получения значения в текущем блоке кода и передачи этого значения функции func или dyneval. Иными словами, чтобы функции func или dyneval вернули какое-то значение, необходимо в вызываемом ими блоке кода присвоить значение переменной result.

Например:

        $dyneval "
            if args[0] mod 2 = 0:
                $result='чётное число'
            else
                $result='нечётное число'
            end
        "
,279

Для каждого отдельного блока кода плеером создаётся собственная переменная result. То есть если вы из локации 1 вызываете локацию 2, то на локации 1 создаётся собственная переменная result, а на локации 2 — собственная, и значения в этих переменных не пересекаются (хотя в плеере 5.7.0. есть небольшая проблема с этим, и использовать переменную result рекомендуется только в конце кода локации. В более новых версиях плееров, например в Quest Navigator, эту проблему исправили и result можно использовать наравне с args). Таким образом переменная result является локальной для каждого отдельного вызова блока кода.

Если при обработке блока кода были установлены и result, и $result, то предпочтение отдаётся строковому значению.

USEHTML

USEHTML — если значение данной переменной отлично от нуля, включается режим распознавания HTML. При этом HTML разметку можно использовать в названиях действий, предметов, в тексте, выводимом в окна основного и дополнтельного описаний, а так же в диалоговых окнах, вызываемых оператром msg и функцией $input.

        ! включение HTML
        usehtml=1
        ! вывод текста с HTML-разметкой
        *pl "<font color=#ff8888>Красный текст.</font>"
< Назад, к странице 177
Вперёд, к странице 179 >

Aleks Versus'HowDo-F.A.Q.'2021-2022

Aleks Versus'Game Adventure Making'Really Unimaginable Stories'2013-2022

 

Содержание

1. В чём разница?

1.1. В чём разница между set x=10, let x=10 и x=10?

1.2. В чём разница между переменной со знаком $ и без знака $?

1.3. В чём разница между ' ' (апострофы) и " " (кавычки)?

1.4. В чём разница между *pl "строка" и просто " строка" ?

1.5. Чем отличаются эти две команды? *pl "<<$perem>>" и *pl $perem

1.6. В чём разница между dynamic и dyneval?

1.7. В чём разница между gt и goto?

1.8. Чем отличается goto от gosub?

18.1. Чем отличаются команды addqst и openqst?

Источники и дополнительные материалы

2. Вопросы о $COUNTER

2.1. Как сделать, чтобы значение переменной изменялось с течением времени?

2.2. Как сделать, чтобы из одной локации меня через пару секунд перебрасывало в другую локацию?

2.3. Как сделать, чтобы через пару секунд после входа на локацию появлялось новое действие?

2.4. Как сделать, чтобы цикл выполнялся параллельно остальному коду, а не прерывал его?

Источники и дополнительные материалы

3. Вопросы о MSG и $INPUT

3.1. Как вывести на экран отдельное окошко с текстом? | Подскажите аналог команды alert в QSP.

3.2. Как вывести на экран окошко, в котором игрок должен ввести текст? | Подскажите аналог команды prompt в QSP.

3.3. Как прикрутить возможность выбора варианта к окну msg? | Подскажите аналог команды confirm в QSP.

3.4. Как сделать ввод имени игроком?

3.5. Как увеличить число правильных ответов, которые может ввести игрок? | Как сделать варианты для ответа через $input?

Источники и дополнительные материалы

4. Вопросы о меню

4.1. Как сделать меню предмета?

4.2. Как сделать разные меню для двух и более предметов?

4.3. Как сделать меню в ссылках?

4.4. Как передавать локациям-пунктам меню аргументы?

4.5. Как делать контекстное (динамическое) меню?

4.6. Как вставить разделитель в меню?

4.7. Как вставить картинки в меню?

Источники и дополнительные материалы

5. Вопросы по $ONNEWLOC

5.1. Как сделать так, чтобы не писать один и тот же код в каждой локации?

5.2. Как сделать кнопку "Назад", работающую на каждой локации?

5.3. Почему в args на локации-обработчике перехода на новую локацию уже есть данные?

Источники и дополнительные материалы

6. Вопросы по звуковым файлам в QSP

6.1. Как вставить музыку или звук в игру?

6.2. Как запустить две звуковые дорожки?

6.3. Как при переходе на новую локацию прервать одну мелодию и запустить другую?

6.4. Как перезапустить звуковую дорожку?

6.5. Как приглушить музыку?

6.6. Как зациклить мелодию?

Источники и дополнительные материалы

7. Вопросы о гиперссылках

7.1. Как делать гиперссылки, по нажатию на которые выполняется код? | Как делать кликабельный текст? | Как сделать, чтобы по нажатию на текст что-то происходило?

7.2. Как менять цвет гиперссылки?

7.3. Как помещать в гиперссылки сложный код?

7.4. Как сделать гиперссылки без подчёркивания?

Источники и дополнительные материалы

8. Есть ли команда...

8.1. Какой командой можно очистить окно дополнительного описания?

8.2. Существует ли команда для того, чтобы получить название текущей локации?

8.3. Какой командой можно вывести текст в окно дополнительного описания?

8.4. Есть ли команда, которая делает выход из игры?

Источники и дополнительные материалы

9. Вопросы о изображениях

9.1. Как вставить картинку в игру?

9.2. Можно ли вставить в игру gif-файл?

9.3. Как вставить картинку в действие?

9.4. Как поставить картинку фоном?

9.5. Как выводить изображения послойно? Накладывать друг на друга?

9.6. Как сделать кликабельное изображение? | Как сделать так, чтобы при щелчке по изображению выполнялись какие-то действия?

9.7. Как сделать сменяемое изображение на локации?

9.8. Как сделать вывод рандомного изображения?

Источники и дополнительные материалы

10. Интерфейс, дизайн, украшения

10.1. Для чего нужен оператор REFINT, и как он работает?

10.2. Как изменить цвет фона в игре?

10.3. Как изменить формат части текста? Размер, цвет, наклон и т.д.?

10.4. Как сделать красивый фон в классическом плеере?

10.5. Хочу, чтоб в игре окна располагались определённым образом. Как это сделать?

10.6. Можно ли задавать размер окон из кода игры? Чтобы в одной локации были одни настройки, в другой — другие.

10.7. Настроил расположение окна предпросмотра, но когда выключаю его, другие окна смещаются, как это исправить?

10.8. Как изменить цвет подсветки действий?

10.9. Как изменить цвет фона для отдельного окна?

10.10. Как сделать плавное появление текста? | Как сделать плавное изменение цвета фона? | Как сделать плавное изменение цвета текста?

10.11. Как использовать в игре собственный шрифт?

10.12. С предметов можно снимать выделение, а можно ли снять выделение с действия?

Источники и дополнительные материалы

11. Вопросы об условиях

11.1. При проверке условия записано просто число, без операции сравнения, но QSP не выдаёт ошибку. Почему?

11.2. Как сделать так, чтобы действие появлялось только при определённом условии?

11.3. Видел в одной из игр, как после нажатия на действие, оно становится неактивным. Как это сделать?

11.4. Как добавить текст, который будет выводиться только при выполнении определённого условия?

11.5. Как сделать, чтобы в диалоговом окне текст набирался в зависимости от условий? Чтобы при срабатывании одного или обоих условий текст в любом случае выводился? Логическое ИЛИ (OR).

11.6. Как упростить условие с логическим И (AND)?

11.7. Как упростить взаимоисключающие условия? Логическое XOR.

Источники и дополнительные материалы

12. Вопросы о DYNAMIC

12.1. Зачем нужен оператор dynamic?

12.2. Можно ли сделать переменную с рандомным (случайным) названием?

12.3. Создаю действия с помощью цикла, но они работают неправильно. Что делать?

12.4. Почему не работает dynamic?

Источники и дополнительные материалы

13. Не работает...

13.1. Рисую таблицу и хочу зафиксировать высоту, но атрибут height не работает.

13.2. Пытаюсь использовать разные HTML-теги в игре, но они не работают — просто не выводятся. Почему?

13.3. Не работает IIF!

13.4. Пытаюсь сделать кликабельную картинку с помощью тегов MAP и AREA, но ничего не получается. | Не выводится картинка, не работает область клика, область клика смещена.

13.5. Не работает *pl в действии с goto.

13.6. В AeroQSP не работает атрибут.

13.7. Не работает гиперссылка в AeroQSP.

13.8. Не работает оператор JUMP — не может найти метку.

13.9. Не работает многострочный код. Как исправить?

13.10. Не работает многострочный код. Как исправить?

13.11. Сколько END`ов нужно добавить?

13.12. Не работает условие. Как исправить? (if skrom>10 and <15)

13.13. Не работают десятичные дроби, дробные числа, числа с запятыми!

Источники и дополнительные материалы

14. Вопросы о предметах

14.1. Как добавить предмет в окно предметов?

14.2. Как удалить предмет из окна предметов?

14.3. Как удалить все предметы?

14.4. Как добавить предмет в определённую позицию в окне предметов?

14.5. Как заменить один предмет на другой?

14.6. Как делать динамические/считаемые предметы? | Как делать стакающиеся предметы? | Как делать предметы рядом с названиями которых выводится их количество?

14.7. Как добавить предмет с картинкой но без названия?

14.8. Как сделать, чтоб при щелчке по предмету выполнялся какой-либо код?

14.9. Как снять выделение предмета? | Как сделать, чтобы выбранный предмет можно было кликнуть ещё раз?

14.10. Как сделать два списка предметов? Например для игры за разных персонажей.

14.11. Как сделать, чтобы плеер выполнял определённый код при добавлении любого предмета?

14.12. Как сделать два разных предмета с одинаковыми названиями?

14.13. Как сделать многоуровневый рюкзак? | Как сделать предметы в предметах?

14.14. Можно ли выводить предметы не в окне предметов?

Источники и дополнительные материалы

15. Вопросы о строке ввода

15.1. Зачем вообще нужна строка ввода (поле ввода)?

15.2. Как задействовать строку ввода в игре?

Источники и дополнительные материалы

16. Вопросы по вёрстке

16.1. Можно ли писать текст поверх вставленной картинки (не бэкграунда)?

16.2. Возможно ли сделать плавный переход между локациями?

16.3. Как расположить картинку справа, а текст слева?

16.4. Как ограничить размер выводимого изображения?

16.5. Как сделать рамку окна основного описания? | Как сделать, чтобы картинки шли по контуру основного окна?

16.6. Как сделать вывод предметов магазина не длинным списком, а в виде таблицы?

16.7. Можно ли зеркально отразить картинку методами плеера? | Можно ли задать максимальную или минимальную ширину элементу? | Можно ли вычислить доступное место в основном окне?

16.8. Вывожу в окно табличку, а потом текст, но между текстом и табличкой возникают пустые строки. Что это и как этого избежать?

16.9. Можно как нибудь вывести текст в два столба в классике? К примеру характеристики персонажей.

16.10. Как работать с тегами MAP и AREA? Как разметить картинку на кликабельные зоны?

Источники и дополнительные материалы

17. Вопросы о сохранениях

17.1. Как запретить игроку самостоятельно сохранять игру?

17.2. Во время теста игры делал сохранения, затем внёс в игру несколько правок, но сохранения перестали загружаться. Почему так происходит, и что теперь делать?

17.3. Как сделать чекпойнты в игре?

17.4. Как написать действие, которое при каждом клике сохраняло бы игру в файлы "1.sav" и "2.sav" поочерёдно?

Источники и дополнительные материалы

18. Вопросы о файлах и модулях

18.1. Чем отличаются команды addqst и openqst?

18.2. Как сделать лаунчер?

18.3. Мне нужно узнать, есть ли в папке файл (картинка, музыка и т.д.). Как это сделать?

18.4. Перенёс файл игры из одной папки в другую. В Quest Generator пропали все папки. Почему так происходит, и как этого избежать?

18.5. В папке с игрой стали появляться файлы с расширением .tmp. Что это за файлы, нужны они, и как избавиться от их появления?

Источники и дополнительные материалы

19. Изыски

19.1. Как использовать ASCII-графику в QSP?

19.2. Как вставить в игру видео?

19.3. Как сделать так, чтобы текст появлялся на экране постепенно? По буквам?

19.4. Как защитить игру от чита?

19.5. Как задействовать клавиатуру в игре?

19.6. Как пропустить прохождение нескольких глав, чтобы протестировать вновь написанную главу и только её?

19.7. Как из под плеера выполнить произвольную строку кода?

19.8. Как узнать, на каком устройстве запущена игра? Телефон, компьютер, планшет?

19.9. Как обновлять переменные на экране?

19.10. Как сделать, чтобы текст выводился снизу вверх?

Источники и дополнительные материалы

20. Конкретные задачи

20.1. Как сделать возврат на предыдущую локацию?

20.2. Как проверить число на чётность?

20.3. Как сделать шанс на выпадение определённой вещи? Например 25 процентный шанс на то, что в сундуке окажется золотая чаша?

20.4. Как сделать, чтобы текст выводился не внизу окна основного описания, а сверху?

20.5. Как можно удалить часть текста из описания?

20.6. Как вывести на экран HTML-разметку, не отключая режим распознавания HTML? То есть при usehtml=1.

20.7. Есть несколько переменных с разными значениями. Как получить имя переменной, в которой находится наибольшее значение?

20.8. Как в QSP сравнить два массива?

20.9. Как сделать вытягивание случайных карт из колоды? Карты вытягиваются несколько раз, но они не должны повторяться.

20.10. Как отсортировать данные? Например, список персонажей по алфавиту, или набор чисел от меньшего к большему.

20.11. Как сделать проценты?

20.12. Как решить задачу по поиску случайного набора слагаемых?

20.13. Как разредить текст пробелами?

20.14. Как сделать записную книжку в игре?

20.15. Как сделать так, чтобы на локацию можно было зайти только один раз?

20.16. Как заставить действия выводиться в нужном мне порядке?

20.17. Как сделать в игре книгу? Чтобы её можно было взять и потом прочитать?

20.18. Как сделать склад, сундук, тайник, место, в котором можно выкладывать и хранить предметы?

20.19. Как сделать выпадение случайного действия на локации?

20.20. Как сделать перемещение на случайную локацию?

20.21. Как сделать случайный предмет?

20.22. Как узнать, какие переменные есть в игре? Может для этого есть специальная команда?

20.23. Как убрать преформатирование из HTML-разметки?

Источники и дополнительные материалы

21. Вопросы по Quest Generator (v.4.0.0.Beta)

21.1. Мне часто приходится вставлять одинаковые или почти одинаковые кусочки кода. Как автоматизировать этот процесс?

21.2. Делаю преформатирование пробелами, чтобы появлялась вертикальная полоска, так нагляднее. Нет ли какой-то комбинации клавиш, чтобы не тыкать пробел по пять раз?

21.3. Как свернуть кусочек кода, написанный под комментарием? В идеале, чтоб остался один только комментарий.

Источники и дополнительные материалы

22. Вопросы о Quest Navigator (v.0.0.28)

22.1. Пишу несколько игр в Quest Navigator. Как сделать, чтобы у каждой игры было собственное оформление?

22.2. Как подключить свой шрифт к игре?

22.3. Пишу <strong>bcolor=rgb(255,200,200)</strong>, но это не меняет цвет фона игры. Как изменить цвет фона из кода QSP?

22.4. Хочу прописать игре собственный вид курсора, как это сделать?

22.5. Скопировал шаблон оформления в папку со своей игрой, но что с ним теперь делать? Не пойму, что за что отвечает.

22.6. Как узнать, на каком плеере запущена игра, на классическом QSP, или на Quest Navigator?

22.7. Как вставить видео в игру на Навигаторе?

22.8. Как делать standalone-сборку на Навигаторе? | Независимая сборка на Quest Navigator

22.9. Где в Quest Navigator править размер окна с игрой? Например мне надо, чтобы игра изначально открывалась в разрешении 1280х720.

22.10. Как выполнить JavaScript прямо из кода QSP?

22.11. Инструкция посмене оформления из кода QSP?

Источники и дополнительные материалы

23. Ограничения

23.1. Видел в справке ограничение на 100 подключаемых файлов? Это что, я не смогу использовать более ста файлов картинок и музыки?

23.2. Хочу разместить на локации около 100 действий. Это вообще возможно?

23.3. Генерирую переменные с помощью оператора dynamic, и вдруг выходит ошибка 123. Что это, и как с этим бороться?

Источники и дополнительные материалы

24. Вопросы по работе с плеерами

24.1. Как сделать так, чтобы AeroQSP запускался прямо из Quest Generator?

24.2. Как сделать StandAlone-сборку на классическом плеере? | Можно ли сделать игру так, чтобы играть без плеера? | Как сделать пакетный файл запуска, чтобы игрок тыкал иконку start и сразу начинал играть?

Источники и дополнительные материалы

Зарезервированные слова, системные переменные, спецсимволы

Операции

Операторы

Функции

Системные переменные

Иные синтаксемы

Алфавитный указатель ключевых слов, спецсимволов, синтаксем

Источники и дополнительные материалы